Skip to content

feat(snap-network-utils): add shared AssetsProvider (WPN-1784) - #82

Open
ulissesferreira wants to merge 1 commit into
mainfrom
WPN-1784-shared-assets-service
Open

feat(snap-network-utils): add shared AssetsProvider (WPN-1784)#82
ulissesferreira wants to merge 1 commit into
mainfrom
WPN-1784-shared-assets-service

Conversation

@ulissesferreira

@ulissesferreira ulissesferreira commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Add AssetsProvider to @metamask/snap-networks-utils as a thin, typed read layer over Core AssetsController
  • Bump @metamask/assets-controller to ^13.0.0 and wire messenger actions for getAccountAssetByID, getAccountAssetsByIDs, and getAccountAssetsByScope
  • Export AssetsProvider, AssetsProviderMessenger, and ASSETS_PROVIDER_NAME from the package root
  • Sync bitcoin and tron snap.manifest.json bundle shasums after lockfile changes

Test plan

  • yarn workspace @metamask/snap-networks-utils run build
  • yarn workspace @metamask/snap-networks-utils run test
  • yarn constraints

@socket-security

socket-security Bot commented Jul 31, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Addednpm/​@​metamask/​assets-controller@​13.0.07610080100100

View full report

@socket-security

socket-security Bot commented Jul 31, 2026

Copy link
Copy Markdown

All alerts resolved. Learn more about Socket for GitHub.

This PR previously contained dependency changes with security issues that have been resolved, removed, or ignored.

Ignoring alerts on:

  • npm/@metamask/assets-controller@13.0.0
  • npm/@ethersproject/providers@5.8.0
  • npm/@metamask/assets-controllers@110.0.3
  • npm/@metamask/config-registry-controller@2.0.0
  • npm/@metamask/core-backend@8.1.0
  • npm/@metamask/network-controller@35.0.0
  • npm/@metamask/phishing-controller@17.3.0
  • npm/@metamask/remote-feature-flag-controller@5.0.0
  • npm/@metamask/transaction-controller@69.4.0
  • npm/@metamask/profile-sync-controller@28.3.0
  • npm/@tanstack/query-core@5.101.4
  • npm/ethereumjs-wallet@1.0.2
  • npm/ulid@2.4.0
  • npm/@metamask/eth-json-rpc-infura@10.3.0
  • npm/@metamask/geolocation-controller@1.0.0
  • npm/@metamask/multichain-network-controller@3.2.2
  • npm/keccak@3.0.4
  • npm/rlp@2.2.7
  • npm/ws@8.18.0
  • npm/@metamask/snaps-controllers@19.0.1

View full report

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/shiki@0.14.7
Transitive via typedoc (devDependency only, docs/build tooling).
"Obfuscated" alert is minified highlighter + TextMate grammars.
Network/fetch is for loading onig.wasm and local theme/grammar assets.
Same version already ignored in MetaMask/eth-json-rpc-middleware#426; also present in MetaMask/core via typedoc.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/vscode-oniguruma@1.7.0
Transitive via typedoc → shiki (devDependency only).
fetch is Emscripten WASM bootstrap (same-origin).
Publisher change alexandrudima → vscode-bot is Microsoft maintainers on microsoft/vscode-oniguruma.
Same version ignored in MetaMask/eth-json-rpc-middleware#426; also in MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/cjs-module-lexer@1.4.3
Transitive via @ts-bridge/cli (build tooling only; not in published dist).
Official nodejs/cjs-module-lexer; installed sources use JSON.parse, not eval.
Already present in this repo via Jest as a different major.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/marked@4.3.0
Transitive via typedoc (docs tooling only; not in published dist).
AI alert is about markdown URL sanitization; only used for typedoc HTML docs.
Same typedoc→marked@4.3.0 stack already in MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/snaps-controllers@19.0.1
Transitive via @metamask/assets-controller (messenger action types only; controller runtime not in published dist).
First-party MetaMask controller package; obfuscation alert is compiled/transpiled controller bundle.
Same package already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/assets-controller@11.2.0
Direct dependency for Core AssetsController messenger action types; published dist does not bundle controller runtime.
Network/fetch is expected for MetaMask controller packages already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/eth-json-rpc-infura@10.3.0
Transitive via @metamask/assets-controller. First-party MetaMask JSON-RPC client used by network controllers.
Publisher change gudahtt → metamaskbot is MetaMask org maintainers; package already in MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/assets-controllers@110.0.2
Transitive via @metamask/assets-controller (types-only usage; controller runtime not shipped in published dist).
First-party MetaMask controller package; network access expected for RPC/API controllers in MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/multichain-network-controller@3.2.1
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@ethersproject/providers@5.8.0
Transitive via @metamask/assets-controller. Standard ethers v5 JSON-RPC provider used by MetaMask controllers.
Not executed in @metamask/snap-networks-utils published output; already present across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/network-controller@34.0.0
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/config-registry-controller@1.0.0
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@tanstack/query-core@5.101.4
Transitive via @metamask/assets-controller. Standard TanStack Query core used by MetaMask controllers for data fetching.
Not executed in @metamask/snap-networks-utils published output; already present across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/phishing-controller@17.3.0
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/core-backend@7.0.0
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/keccak@3.0.4
Transitive via @metamask/assets-controller → ethereum crypto stack.
Standard keccak native addon used across MetaMask/core for address/hash operations.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/profile-sync-controller@28.3.0
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/core-backend@8.0.0
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/ethereumjs-wallet@1.0.2
Transitive via @metamask/assets-controller. Legacy ethereumjs-wallet used by MetaMask controller dependency tree.
Publisher change is ethereumjs org maintainer rotation; deprecated notice is upstream rename to @ethereumjs/wallet.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/remote-feature-flag-controller@4.2.2
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/rlp@2.2.7
Transitive via @metamask/assets-controller. Standard RLP encoding library in MetaMask/core dependency tree.
Publisher change holgerd77 → ralxz is ethereumjs org maintainer rotation.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/transaction-controller@69.3.0
Transitive via @metamask/assets-controller (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/ulid@2.4.0
Transitive via @metamask/assets-controller. Standard ULID generator used by MetaMask controllers.
Publisher change alizain → perrymitchell is routine npm maintainer handoff on the ulid package.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/ws@8.18.0
Transitive via @metamask/assets-controller. Standard WebSocket library used by MetaMask controller dependency tree.
AI anomaly is generic EventTarget-style event dispatch; already present across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/shiki@0.14.7
Transitive via typedoc (devDependency only, docs/build tooling).
"Obfuscated" alert is minified highlighter + TextMate grammars.
Network/fetch is for loading onig.wasm and local theme/grammar assets.
Same version already ignored in MetaMask/eth-json-rpc-middleware#426; also present in MetaMask/core via typedoc.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/vscode-oniguruma@1.7.0
Transitive via typedoc → shiki (devDependency only).
fetch is Emscripten WASM bootstrap (same-origin).
Publisher change alexandrudima → vscode-bot is Microsoft maintainers on microsoft/vscode-oniguruma.
Same version ignored in MetaMask/eth-json-rpc-middleware#426; also in MetaMask/core.

Comment thread packages/snap-networks-utils/src/services/assets/AssetsService.ts Outdated
Comment thread packages/snap-networks-utils/src/types/core-messenger.ts Outdated
ulissesferreira pushed a commit that referenced this pull request Jul 31, 2026
## Explanation

<!--
Thanks for your contribution! Take a moment to answer these questions so
that reviewers have the information they need to properly understand
your changes:

* What is the current state of things and why does it need to change?
* What is the solution your changes offer and how does it work?
* Are there any changes whose purpose might not obvious to those
unfamiliar with the domain?
* If your primary goal was to update one package but you found you had
to update another one along the way, why did you do so?
* If you had to upgrade a dependency, why did you do so?
-->
Proposal to simplify `AssetsService` types and returned values, to align
it to what's currently returned by AssetsController's actions.

## References

<!--
Are there any issues that this pull request is tied to?
Are there other links that reviewers should consult to understand these
changes better?
Are there client or consumer pull requests to adopt any breaking
changes?

For example:

* Fixes #12345
* Related to #67890
-->
Related to #82

## Checklist

- [ ] I've updated the test suite for new or updated code as appropriate
- [ ] I've updated documentation (JSDoc, Markdown, etc.) for new or
updated code as appropriate
- [ ] I've communicated my changes to consumers by [updating changelogs
for packages I've
changed](https://github.com/MetaMask/internal-snaps/tree/main/docs/processes/updating-changelogs.md)
- [ ] I've introduced [breaking
changes](https://github.com/MetaMask/internal-snaps/tree/main/docs/processes/breaking-changes.md)
in this PR and have prepared draft pull requests for clients and
consumer packages to resolve them
@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/assets-controller@13.0.0
Direct dependency for Core AssetsController messenger action types; published dist does not bundle controller runtime.
Network/fetch is expected for MetaMask controller packages already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/assets-controllers@110.0.3
Transitive via @metamask/assets-controller@13.0.0 (types-only usage; controller runtime not shipped in published dist).
First-party MetaMask controller package; network access expected for RPC/API controllers in MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/config-registry-controller@2.0.0
Transitive via @metamask/assets-controller@13.0.0 (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/core-backend@8.1.0
Transitive via @metamask/assets-controller@13.0.0 (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/geolocation-controller@1.0.0
Transitive via @metamask/assets-controller@13.0.0 (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/multichain-network-controller@3.2.2
Transitive via @metamask/assets-controller@13.0.0 (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/network-controller@35.0.0
Transitive via @metamask/assets-controller@13.0.0 (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/remote-feature-flag-controller@5.0.0
Transitive via @metamask/assets-controller@13.0.0 (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@SocketSecurity ignore npm/@metamask/transaction-controller@69.4.0
Transitive via @metamask/assets-controller@13.0.0 (types-only import path; controller runtime not in published dist).
First-party MetaMask controller package; network access expected and already used across MetaMask/core.

@MetaMask MetaMask deleted a comment from cursor Bot Jul 31, 2026
@MetaMask MetaMask deleted a comment from cursor Bot Jul 31, 2026
@ulissesferreira
ulissesferreira force-pushed the WPN-1784-shared-assets-service branch 2 times, most recently from 80f3343 to 0d6b38b Compare July 31, 2026 20:16
@ulissesferreira
ulissesferreira force-pushed the WPN-1784-shared-assets-service branch 3 times, most recently from 76d9473 to f4e8722 Compare July 31, 2026 20:29
@ulissesferreira
ulissesferreira force-pushed the WPN-1784-shared-assets-service branch from 8747d44 to 8589132 Compare July 31, 2026 21:24
@ulissesferreira ulissesferreira changed the title feat: add shared AssetsService to snap-networks-utils (WPN-1784) feat(snap-network-utils): add shared AssetsProvider (WPN-1784) Jul 31, 2026
@ulissesferreira
ulissesferreira marked this pull request as ready for review July 31, 2026 21:25
@ulissesferreira

Copy link
Copy Markdown
Contributor Author

@metamaskbot publish-preview

@github-actions

Copy link
Copy Markdown
Contributor

Preview builds have been published. Learn how to use preview builds in other projects.

Expand for full list of packages and versions.
@metamask-previews/bitcoin-wallet-snap@2.0.0-preview-8589132
@metamask-previews/snap-networks-utils@0.0.0-preview-8589132
@metamask-previews/tron-wallet-snap@2.0.0-preview-8589132

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants